package _enum;

import java.util.Arrays;

/**
 * 枚举类实现接口的操作
 * > 情况1：枚举类实现接口，在枚举类中重写接口中的抽象方法。
 * --------当通过不同的枚举类对象调用此方法时，执行的是同一个方法。
 * > 情况2：枚举类中的每一个对象重写接口中的抽象方法。
 * --------当通过不同的枚举类对象调用此方法时，执行的是不同的实现的方法。
 */
public class EnumTest {
    public static void main(String[] args) {
        // 测试方法
        // 1. toString()
        System.out.println(Season.SPRING); //Season{seasonName='春天', seasonDesc='春暖花开'}
        // 2.name()
        System.out.println(Season.AUTUMN.name());// AUTUMN
        // 3. values()
        Season[] values = Season.values();
        // [Season{seasonName='春天', seasonDesc='春暖花开'},
        // Season{seasonName='夏天', seasonDesc='夏日炎炎'},
        // Season{seasonName='秋天', seasonDesc='硕果累累'},
        // Season{seasonName='冬天', seasonDesc='寒气逼人'}]
        System.out.println(Arrays.toString(values));

        // 4. valueOf(String objName)
        // 返回当前枚举类中名称为 objName的枚举类对象。
        // 如果不存在，则报错。
        System.out.println(Season.valueOf("WINTER")); // Season{seasonName='冬天', seasonDesc='寒气逼人'}
        // 5. ordinal() 返回当前枚举常量的次序号，默认从 0 开始。
        System.out.println(Season.AUTUMN.ordinal());

        // 通过枚举类对象调用重写接口中的方法
        Season.SPRING.info();

        Season.SUMMER.show();

    }
}
